
package GUI;

import dominio.Cliente;
import dominio.Endereco;
import dominio.Telefone;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import negocio.ClienteNegocio;
import negocio.EnderecoNegocio;
import negocio.TelefoneNegocio;

public class ControladorGerenciarCliente extends MouseAdapter implements ActionListener  {

    protected JanelaGerenciarCliente jGC;
    protected JanelaCadastrarCliente jcc;
    protected JanelaExcluirCliente jEC;
    private ClienteNegocio negocioCliente = new ClienteNegocio();
    private EnderecoNegocio enderecoNegocio = new EnderecoNegocio();
    private TelefoneNegocio telefoneNegocio = new TelefoneNegocio();
    private String mensagemCampoObrigatorio = "";

    public String getMensagemCampoObrigatorio() {
        return mensagemCampoObrigatorio;
    }

    public void setMensagemCampoObrigatorio(String mensagemCampoObrigatorio) {
        this.mensagemCampoObrigatorio = mensagemCampoObrigatorio;
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        super.mouseClicked(e);
        int index;
        List<Cliente> clientes = new ArrayList<Cliente>();
        Cliente client = new Cliente();
        Endereco end = new Endereco();
        Telefone tel = new Telefone();
        index = jGC.getjTable1().getSelectedRow();
        clientes = negocioCliente.listarPorCpf(jGC.getjTable1().getValueAt(index, 1).toString());
        client = negocioCliente.pesquisarCliente(jGC.getjTable1().getValueAt(index, 1).toString());
        end = enderecoNegocio.pesquisarEndereco(jGC.getjTable1().getValueAt(index, 1).toString());
        tel = telefoneNegocio.pesquisarTelefone(jGC.getjTable1().getValueAt(index, 1).toString());
        jcc.setCampoNome(client.getNome());
        jcc.setCampoCPF(client.getCpf());
        jcc.setCampoObs(jGC.getjTable1().getValueAt(index, 2).toString());
        jcc.setCampoRua(end.getRua());
        jcc.setCampoNumero(String.valueOf(end.getNumero()));
        jcc.setCampoCidade(end.getCidade());
        jcc.setCampoBairro(end.getBairro());
        jcc.setCampoUF(end.getUf());
        if (tel == null)
        {
            jcc.setCampoTelefone("");
        } else
        {
            jcc.setCampoTelefone(tel.getTelefone());
        }
        mostrarJanelaCadastrarCliente();

    }

    public void setJanelaCadastrarCliente(JanelaCadastrarCliente jCC) {
        this.jcc = jCC;
    }

    public void setJanelaExcluirCliente(JanelaExcluirCliente jExcluirC){
        jEC = jExcluirC;
    }

    public ControladorGerenciarCliente(){

    }

    public void pesquisar (String cpf)
    {
        try
        {
            if (jGC.getCampoCPF().trim().length() < 14)
            {
                setMensagemCampoObrigatorio("Preencha o campo cpf corretamente");
                JOptionPane.showMessageDialog(jGC, getMensagemCampoObrigatorio());
                setMensagemCampoObrigatorio("");
                return;
            }else
            {
                ClienteNegocio negocio = new ClienteNegocio();
                ModeloTabela mt = new ModeloTabela();
                mt.setClientes(negocio.listarPorCpf(cpf));
                jGC.getjTable1().setModel(mt);
                jGC.setCampoCPF("");
            }
        }catch(NullPointerException e)
        {
            e.getStackTrace();
        }
    }

    public void pesquisarPorNome (String nome)
    {
        if (jGC.getCampoNome().trim().length() == 0)
        {
            setMensagemCampoObrigatorio("Preencha o campo cpf corretamente");
            JOptionPane.showMessageDialog(jGC, getMensagemCampoObrigatorio());
            setMensagemCampoObrigatorio("");
            return;
        }else
        {
                ClienteNegocio negocio = new ClienteNegocio();
                ModeloTabela mt = new ModeloTabela();
                mt.setClientes(negocio.listarPorNome(nome));
                jGC.getjTable1().setModel(mt);
                jGC.setCampoNome("");
        }
    }

    public void atualizar ()
    {
        try
        {
            ClienteNegocio neg = new ClienteNegocio();
            ModeloTabela model = new ModeloTabela();
            model.setClientes(neg.listar());
            jGC.setJTable(model);
        }catch(NullPointerException e)
        {
            e.getStackTrace();
        }
    }



    public void setJanelaGerenciarCliente(JanelaGerenciarCliente g){
        jGC = g;
    }

    public void mostrarJanelaCadastrarCliente(){
        jcc.setVisible(true);
    }

    public void mostrarJanelaExcluirCliente(){
        jEC.setVisible(true);
    }

    public void sairJanelaGerenciarCliente ()
    {
        jGC.setVisible(false);
    }



    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equalsIgnoreCase("Cadastrar")){
            mostrarJanelaCadastrarCliente();
        }

        else if(e.getActionCommand().equalsIgnoreCase("Excluir Cliente")){
            mostrarJanelaExcluirCliente();
        }else if (e.getActionCommand().equalsIgnoreCase("Pesquisar por cpf"))
        {
            pesquisar(jGC.getCampoCPF());
        }else if (e.getActionCommand().equalsIgnoreCase("Pesquisar Por Nome"))
        {
            pesquisarPorNome(jGC.getCampoNome());
        }
            else  if (e.getActionCommand().equalsIgnoreCase("Atualizar"))
        {
            atualizar();
        }else if (e.getActionCommand().equalsIgnoreCase("Sair"))
        {
            sairJanelaGerenciarCliente();
        }else if (e.getActionCommand().equalsIgnoreCase("Alterar Cliente"))
        {
            mostrarJanelaCadastrarCliente();
        }
    }

}
